Python : 3.6.3
创建列表
列表即由一系列按照一定顺序排列的元素组成。
在 Python 中,用方括号([])来表示列表,并用逗号来分隔其中的元素:1
cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
如果将列表打印:1
print(cars)
其输出:1
['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
Python 将打印列表的内部元素,包括方括号,且元素将被引号包裹。
创建空列表
1 | cars = [] |
Python 无法向其他编程语言一样(如 Java)初始化创建指定长度的空列表:1
2cars = [8]
print(cars)
其输出是:1
8
Python 列表内的元素不要求一致,可以混合:1
2cars = ["BMW",8,"Mini","Smart","Audi","Ford","Jeep"]
print(cars)
其输出:1
['BMW', 8, 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
不过,实际编程中应当使列表内的元素类型保持一致。
访问列表元素
列表是有序集合,可直接通过元素的位置(索引)访问其列表元素:1
print(cars[0])
输出:1
BMW
Python 将只返回元素内容,而不包括方括号和引号。
Python 的索引是从 0 开始,和大多数编程语言一致。
同理,要想访问第3个元素:1
print(cars[2])
输出:1
Mini
若不知道一个列表包含多少个元素,而又想直接获取最后一个元素,Python 提供一个特殊的语法:1
print(cars[-1])
输出:1
Jeep
同理,要想访问倒数第2个元素:1
print(cars[-2])
输出:1
Ford
可以直接使用列表中的各个元素值:1
print("My first car is a " + cars[0] + ".")
输出:1
My first car is a BMW.
甚至可以结合字符串的 API :1
print("My first car is a " + cars[0].title() + ".")
输出:1
My first car is a BMW.
因为此处元素值首字母本身已大写,故 titile() 后结果不会发生变化。
获取列表的长度
使用 len() 方法可以直接获取列表的长度(元素个数):1
2cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(len(cars))
输出:1
7
元素个数的计算从 1 开始,这点和其他编程语言也是相同的。
若访问一个错误索引位置的元素,Python 无法通过编译,将提示错误:1
IndexError:list index out of range
修改列表元素
1 | cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"] |
输出:1
2['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
['Aston Martin', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
通过 “=” 可将新的元素值赋予指定索引位置的元素,其值将发生修改
添加列表元素
从列表末尾添加元素
可以使用 append() 方法向列表的末尾追加一个新的元素:1
2
3
4cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(cars)
cars.append("Aston Martin")
print(cars)
输出:1
2['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep', 'Aston Martin']
可以先创建一个空列表,通过 append() 方法不断的向列表中添加新元素:1
2
3
4
5
6
7
8
9
10
11cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(cars)
cars = []
cars.append("BMW")
cars.append("Ferrari")
cars.append("Mini")
cars.append("Smart")
cars.append("Audi")
cars.append("Ford")
cars.append("Jeep")
print(cars)
输出:1
2['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
两者输出结果是一致的。
可以在列表的指定位置处添加元素
可以使用 insert() 方法向列表指定索引处添加一个元素,列表内将从该索引开始,往后索引上的元素都将后移一位:1
2
3
4cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(cars)
cars.insert(3, "Lamborghini")
print(cars)
输出:1
2['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
['BMW', 'Ferrari', 'Mini', 'Lamborghini', Smart', 'Audi', 'Ford', 'Jeep']
若 insert() 方法指定的元素位置超出了列表的长度,则元素将被默认添加在列表的末尾1
2
3
4cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(cars)
cars.insert(9, "Lamborghini")
print(cars)
输出:1
2['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep', 'Lamborghini']
删除列表元素
直接删除元素
可以使用 del 语句删除列表指定位置处的元素:1
2
3
4cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(cars)
del cars[5]
print(cars)
输出:1
2['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Jeep']
删除元素时获取被删除的元素
可以使用 pop() 方法在删除元素时获取被删除的元素:1
2
3
4
5cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(cars)
car = cars.pop()
print(car)
print(cars)
输出:1
2
3['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
Jeep
['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford']
pop() 方法默认将删除列表末尾的列表,其和栈中弹出最近存入的元素类似。
要想弹出指定位置的元素可以指定索引位置:1
2
3
4
5cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(cars)
car = cars.pop(5)
print(car)
print(cars)
输出:1
2
3['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
Ford
['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Jeep']
根据值删除元素
Python 可以使用 remove() 方法直接根据元素的值删除来删除元素:1
2
3
4cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(cars)
cars.remove("Mini")
print(cars)
输出:1
2['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
['BMW', 'Ferrari', 'Smart', 'Audi', 'Ford', 'Jeep']
若指定的元素值在列表中存在多个,则根据索引顺序只删除第一次出现该值处的元素:1
2
3
4cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep", "Mini"]
print(cars)
cars.remove("Mini")
print(cars)
输出:1
2['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep', 'Mini']
['BMW', 'Ferrari', 'Smart', 'Audi', 'Ford', 'Jeep', 'Mini']
若要删除的元素值提前被赋予某变量,那么执行列表的 remove() 方法对该变量没有影响:1
2
3
4
5
6cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(cars)
car = "Mini"
cars.remove(car)
print(car)
print(cars)
输出:1
2
3['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
Mini
['BMW', 'Ferrari', 'Mini', 'Audi', 'Ford', 'Jeep']
一个特殊的地方,如想移除一个不存在的元素值,Python 无法通过编译,将提示:1
ValueError: list.remove(x): x not in list
列表排序
列表的永久排序
可以使用 sort() 方法对列表进行永久排序:1
2
3
4cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(cars)
cars.sort()
print(cars)
其输出:1
2['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
['Audi', 'BMW', 'Ferrari', 'Ford', 'Jeep', 'Mini', 'Smart']
默认是按照自然排序的规则对列表元素进行排序,若想安装自然排序相反的顺序排序,可以设定 sort() 方法参数reverse=True:1
2
3
4cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(cars)
cars.sort(reverse=True)
print(cars)
其输出:1
2['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
['Smart', 'Mini', 'Jeep', 'Ford', 'Ferrari', 'BMW', 'Audi']
列表的临时排序
可以使用 sorted() 方法对列表进行临时的排序:1
2
3
4cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(cars)
print(sorted(cars))
print(cars)
其输出:1
2
3['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
['Audi', 'BMW', 'Ferrari', 'Ford', 'Jeep', 'Mini', 'Smart']
['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
也可以通过设置 reverse=True 参数使其按自然排序相反的顺序排序:1
2
3
4cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(cars)
print(sorted(cars, reverse=True))
print(cars)
其输出:1
2
3['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
['Smart', 'Mini', 'Jeep', 'Ford', 'Ferrari', 'BMW', 'Audi']
['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
列表的反转
可以使用 reverse() 方法对列表元素顺序进行反转:1
2
3
4cars = ["BMW","Ferrari","Mini","Smart","Audi","Ford","Jeep"]
print(cars)
cars.reverse()
print(cars)
其输出:1
2['BMW', 'Ferrari', 'Mini', 'Smart', 'Audi', 'Ford', 'Jeep']
['Jeep', 'Ford', 'Audi', 'Smart', 'Mini', 'Ferrari', 'BMW']